﻿// pch.h: 这是预编译标头文件。
// 下方列出的文件仅编译一次，提高了将来生成的生成性能。
// 这还将影响 IntelliSense 性能，包括代码完成和许多代码浏览功能。
// 但是，如果此处列出的文件中的任何一个在生成之间有更新，它们全部都将被重新编译。
// 请勿在此处添加要频繁更新的文件，这将使得性能优势无效。

#ifndef PCH_H
#define PCH_H

// 添加要在此处预编译的标头
//#include "framework.h"
#include <afxcontrolbars.h>

#include <stdint.h>
#include <vector>
#include "serial.hpp"

enum PACK_ID
{
	ID_POS_PACK,
	ID_CELL_SET_PACK,
	ID_CELL_CLEAR_PACK,
	ID_PARAM_SET_PACK,
	ID_PARAM_SET_OK_PACK,
	ID_PARAM_GET_PACK,
	ID_PARAM_SEND_PACK,
	ID_MAP_SAVE_PACK,
	ID_MAP_SAVE_OK_PACK,
	ID_MAP_DEL_PACK,
	ID_MAP_DEL_OK_PACK,
	ID_MAP_GET_PACK,
	ID_MAP_CLEAR_PACK
};

#pragma pack(1)
struct pos_pack
{
	uint8_t id = ID_POS_PACK;
	uint32_t x;
	uint32_t y;
	int32_t z;
	int32_t yaw;
	uint8_t check_sum;
};

class cell_pack
{
public:
	cell_pack(bool is_cell_set)
	{
		if (is_cell_set)
			id = ID_CELL_SET_PACK;
		else
			id = ID_CELL_CLEAR_PACK;
	}
	uint8_t id;
	uint16_t x;
	uint16_t y;
	uint8_t check_sum;
};

struct map_get_pack
{
	uint8_t id = ID_MAP_GET_PACK;
	uint8_t check_sum;
};

struct map_clear_pack
{
	uint8_t id = ID_MAP_CLEAR_PACK;
	uint8_t check_sum;
};
#pragma pack()

extern uint8_t header1;
extern uint8_t header2;
extern CSerialPort com;

#endif //PCH_H
